﻿using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Windows.Forms;
using Cotizav.PRESENTACION.DialogBox;
using Cotizav.CONEXION;

namespace Cotizav.PRESENTACION.CartaCompromiso
{
    public partial class RegistroCartaCompromiso : Form
    {
        private CtrlVendedor ctVendedor;
        private CtrlClientes ctCliente;
        private CtrlEquipo ctEquipo;
        private CtrlCartaCompromiso ctCartaCompromiso;

        private List<CARTACOMPROMISO_DETALLE> listaEquiposCartaCompromiso;
        
        public RegistroCartaCompromiso()
        {
            InitializeComponent();

            ctVendedor = new CtrlVendedor();
            ctCliente = new CtrlClientes();
            ctEquipo = new CtrlEquipo();
            ctCartaCompromiso = new CtrlCartaCompromiso();

            listaEquiposCartaCompromiso = new List<CARTACOMPROMISO_DETALLE>();
        }

        private void RegistroCartaCompromiso_Load(object sender, EventArgs e)
        {
            txtFechaRegistro.Text = DateTime.Now.ToShortDateString();

            //carga de vendedor
            cmbVendedor.DataSource = ctVendedor.getListVendedor();
            cmbVendedor.DisplayMember = "nombre";
            cmbVendedor.ValueMember = "idVendedor";
            cmbVendedor.SelectedIndex = -1;
        }


        private void btnExaminar_Click(object sender, EventArgs e)
        {
            DialogSearchObject iuBuscarCliente = new DialogSearchObject("Cliente");

            if (iuBuscarCliente.ShowDialog(this) == DialogResult.OK)
            {
                string idcliente = iuBuscarCliente.ResultadoBusqueda;

                if (!string.IsNullOrWhiteSpace(idcliente))
                {
                    CLIENTE cli = ctCliente.getCliente(idcliente);

                    txtCliente.Text = cli.razonSocial;
                    txtCliente.Tag = cli.idCliente;
                }
            }
        }

        private void btnNuevo_Click(object sender, EventArgs e)
        {
            DialogSearchObject buscarEquipo = new DialogSearchObject("Equipo");

            if (buscarEquipo.ShowDialog(this) == DialogResult.OK)
            {
                string idEquipo = buscarEquipo.ResultadoBusqueda;

                if (!string.IsNullOrWhiteSpace(idEquipo))
                {
                    CARTACOMPROMISO_DETALLE buscarCarta = listaEquiposCartaCompromiso.Find(x => x.idequipo == idEquipo);                 

                    if (buscarCarta == null)
                    {
                        EQUIPO equipo = ctEquipo.getEquipo(idEquipo);

                        CARTACOMPROMISO_DETALLE cartaDetalle = new CARTACOMPROMISO_DETALLE()
                        {
                            idequipo = equipo.idEquipo,
                            nombreEquipo = equipo.nombreEquipo,
                        };

                        listaEquiposCartaCompromiso.Add(cartaDetalle);

                        gridEquiposRegistrados.DataSource = null;
                        gridEquiposRegistrados.DataSource = listaEquiposCartaCompromiso;

                        this.setReadOnlyRows();
                    }
                    else
                    {
                        MessageBox.Show("El equipo ya se encuentra en la lista", "Cotizav", MessageBoxButtons.OK, MessageBoxIcon.Exclamation, MessageBoxDefaultButton.Button1);
                    }
                }
            }
        }

        internal void setReadOnlyRows()
        {
            if (gridEquiposRegistrados.Rows.Count > 0)
            {
                foreach (DataGridViewRow dr in gridEquiposRegistrados.Rows)
                {
                    dr.ReadOnly = true;
                }
            }
        }

        private void gridEquiposRegistrados_DataBindingComplete(object sender, DataGridViewBindingCompleteEventArgs e)
        {
            if (gridEquiposRegistrados.DataSource != null)
            {
                gridEquiposRegistrados.Columns["idCartaCompromisoDetalle"].Visible = false;
                gridEquiposRegistrados.Columns["idcartacompromiso"].Visible = false;
                gridEquiposRegistrados.Columns["idequipo"].Visible = false;
                gridEquiposRegistrados.Columns["secuencia"].Visible = false;
                gridEquiposRegistrados.Columns["nombreEquipo"].HeaderText = "Equipo";
                gridEquiposRegistrados.Columns["nombreEquipo"].AutoSizeMode = DataGridViewAutoSizeColumnMode.Fill;
                gridEquiposRegistrados.Columns["CARTA_COMPROMISO"].Visible = false;
                gridEquiposRegistrados.Columns["EQUIPO"].Visible = false;
            }
        }

        internal void registrarCartaCompromiso()
        {
            if (txtCliente.Tag != null)
            {
                if (cmbVendedor.SelectedIndex >= 0)
                {
                    if (!string.IsNullOrWhiteSpace(txtReferencia.Text))
                    {
                        if (listaEquiposCartaCompromiso.Count > 0)
                        {
                            CARTA_COMPROMISO cartaCompromiso = new CARTA_COMPROMISO()
                            {
                                idcliente = txtCliente.Tag.ToString(),
                                nombrecliente = txtCliente.Text,
                                idVendedor = cmbVendedor.SelectedValue.ToString(),
                                nombreVendedor = (cmbVendedor.SelectedItem as VENDEDOR).nombre,
                                referencia1 = txtReferencia.Text,
                                referencia2 = txtReferencia2.Text,
                                despedida = txtDespedida.Text
                            };

                            string numeroCartaCompromiso = ctCartaCompromiso.registrarCartaCompromiso(cartaCompromiso, listaEquiposCartaCompromiso);

                            if (!string.IsNullOrWhiteSpace(numeroCartaCompromiso))
                            {
                                MessageBox.Show("Carta de compromiso registrada. \nNúmero: " + numeroCartaCompromiso, "Cotizav", MessageBoxButtons.OK, MessageBoxIcon.Information, MessageBoxDefaultButton.Button1);
                            }
                        }
                        else
                        {
                            MessageBox.Show(this, "Para registrar una carta de compromiso, como mínimo debe registrarse un equipo", "Cotizav", MessageBoxButtons.OK, MessageBoxIcon.Exclamation, MessageBoxDefaultButton.Button1);
                        }
                    }
                    else
                    {
                        MessageBox.Show(this, "El campo de referencia se encuentra vacío", "Cotizav", MessageBoxButtons.OK, MessageBoxIcon.Exclamation, MessageBoxDefaultButton.Button1);
                    }
                }
                else
                {
                    MessageBox.Show(this, "El vendedor no se encuentra seleccionado", "Cotizav", MessageBoxButtons.OK, MessageBoxIcon.Exclamation, MessageBoxDefaultButton.Button1);
                }
            }
            else
            {
                MessageBox.Show(this, "El cliente no se encuentra seleccionado", "Cotizav", MessageBoxButtons.OK, MessageBoxIcon.Exclamation, MessageBoxDefaultButton.Button1);
            }
        }
    }
}
